﻿/*
 * C-风格字符串与常规char数组之间的一个重要区别:
 * 字符串有内置的结束字符.这意味着不必将字符串长度作为参数传递给函数
 * 而函数可以使用循环依次检查字符串中的每个字符,直到遇到结尾的空值字符为止.
 * 本程序中:使用一个函数来计算特定的字符在字符串中出现的次数.
 *      同时本程序中不需要处理负数,因此它将计数变量声明为unsigned int
*/
#include<iostream>
unsigned int c_in_str(const char * str,char ch);
int main()
{
    using namespace std;
    char mmm[15] = "minimum";

    char *wail = "ululate";

    unsigned int ms=c_in_str(mmm,'m');
    unsigned int us=c_in_str(wail,'u');
    cout <<ms<<" m characters in "<<mmm<<endl;
    cout <<us<<" u characters in "<<wail<<endl;
    return 0;
}

//此函数声明形参str时使用了限定符const.这样如果错误地址函数修改了字符串的内容,编译器将捕获这种错误.
//
unsigned int c_in_str(const char *str,char ch)//也可以使用数组表示法--unsigned int c_in_str(const char str[],char ch)
{
    unsigned int count =0;

    while(*str)
    {
        if(*str == ch)
            count++;
        str++;
    }
    return count;
}
